//
//  DMNativeStrategyParser.h
//  DualMediationSDK
//
//  Created by YeJary on 2025/1/15.
//  Copyright © 2025 DualMediation. All rights reserved.
//

#import <Foundation/Foundation.h>


NS_ASSUME_NONNULL_BEGIN

/**
 * 原生广告策略解析器
 * 负责解析后端原生广告策略数据，提供场景化原生广告配置
 */
@interface DMNativeStrategyParser : NSObject

/**
 * 单例实例
 */
+ (instancetype)sharedParser;

/**
 * 解析原生广告策略数据
 * @param strategyData 策略数据字典
 * @return 解析是否成功
 */
- (BOOL)parseNativeStrategy:(NSDictionary *)strategyData;

/**
 * 获取原生广告场景是否启用
 * @param sceneName 场景名称
 * @return 是否启用
 */
- (BOOL)isNativeEnabledForScene:(NSString *)sceneName;

/**
 * 获取原生广告场景的展示位置
 * @param sceneName 场景名称
 * @return 展示位置（top、bottom）
 */
- (nullable NSString *)getNativePositionForScene:(NSString *)sceneName;

/**
 * 获取原生广告场景的等待时间
 * @param sceneName 场景名称
 * @return 等待时间（秒）
 */
- (NSInteger)getNativeWaitTimeForScene:(NSString *)sceneName;

/**
 * 获取原生广告场景的最大展示次数
 * @param sceneName 场景名称
 * @return 最大展示次数
 */
- (NSInteger)getNativeMaxShowCountForScene:(NSString *)sceneName;

/**
 * 获取原生广告场景的冷却时间
 * @param sceneName 场景名称
 * @return 冷却时间（秒）
 */
- (NSInteger)getNativeCooldownTimeForScene:(NSString *)sceneName;

/**
 * 获取原生广告场景的优先级
 * @param sceneName 场景名称
 * @return 优先级（数值越大优先级越高）
 */
- (NSInteger)getNativePriorityForScene:(NSString *)sceneName;

/**
 * 从广告策略接口获取并解析原生广告策略
 * @param completion 完成回调
 */
- (void)fetchAndParseNativeStrategyWithCompletion:(void(^)(BOOL success, NSError * _Nullable error))completion;

/**
 * 清除所有策略缓存
 */
- (void)clearAllStrategies;

/**
 * 获取所有已解析的原生广告策略
 * @return 策略字典
 */
- (NSDictionary *)getAllNativeStrategies;

@end

NS_ASSUME_NONNULL_END
